package cn.edu.wtbu.wtbu_music_server.controller;


import cn.edu.wtbu.wtbu_music_server.dto.R;
import cn.edu.wtbu.wtbu_music_server.utils.QiniuOssUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * 基础Controller，包含通用接口功能
 */
public class BaseController {

    @Operation(summary = "文件上传操作",description = "返回对象信息中包含文件存储地址（云服务器）")
    @Parameter(name = "file",description = "文件对象",required = true)
    @PostMapping("/upload")
    public R upload(MultipartFile file) throws IOException {
        //获取上传的源文件名
        String fname = file.getOriginalFilename();
        //获取文件流
        InputStream in = file.getInputStream();
        if(fname == null){
            return R.fail().setMsg("上传失败");
        }
        //对文件名处理,获取文件后缀     .mp3   .png
        int index = fname.lastIndexOf(".");
        String suffix = fname.substring(index);
        //随机产生一个UUID作为文件名称
        String key = UUID.randomUUID() + suffix;

        QiniuOssUtils utils = new QiniuOssUtils();
        //上传到七牛OSS
        String url = utils.upload(in,key);
        return R.ok().setData(url);
    }

}
